A data communications network can be thought of as a collection of separate data processing systems which may be connected to form a data path between a first end user at one system and a second end user at another system.
Data to be transmitted through a network is almost always organized in discrete units called frames. A frame normally has recognizable bit patterns at the beginning and end. These bit patterns, commonly called delimiters, are used by a receiving system to identify the start and the end of each frame. A typical frame also has a header which includes the address of the system to which the data is to be sent (the destination system) and the address of the system from which the data is sent (the source system). The frame can also include routing information for setting up paths through the network between the source and destination systems.
To enable a destination system to determine whether errors have been introduced into the data during transmission through the network, each frame may include a frame check sequence or FCS field. The original value of the FCS field is established at the source system by applying a predetermined mathematical algorithm to selected fields in the frame. The results of the algorithm are written into the FCS field. When the frame arrives at the destination system, that system applies the same algorithm to the same fields and compares the results with the value of the FCS field contained in the received frame. If the FCS value generated by the destination system and the FCS field value in the received frame are the same, it is assumed the data has been received without error.
In a complex network, different systems may use different formats for a data frame. When data is transferred into a system having a different frame format, the contents of the fields used in calculation of the original FCS field value may intentionally be changed by the receiving system.
Although the actual data within the frame may not change during frame format conversion operations, any system which subsequently receives a converted frame will be unable to perform normal error checking using the frame FCS field value as described above. This is because the system receiving the converted frame will generate its own FCS field value using the same algorithm and the same fields as were used by the source system in establishing an original FCS field value. If the contents of those fields have been changed (even intentionally) at some point along the data path, the receiving system can be expected to generate an FCS field value different from the original FCS field value calculated by the source system. The mismatch between calculated and received FCS field values would falsely indicate an error in the actual data in the received frame.
It has been suggested that this problem can be avoided by having each intermediate system on a data path recalculate the FCS field value once the format changes have been made. The recalculated FCS field value would be inserted in the frame before the frame is passed on to the next system.
Although this approach permits a greater degree of error checking than the approach originally described, it still has inadequacies. In implementing the "FCS recalculation" approach, each receiving system necessarily performs at least three sequential operations involving a data frame. First, the receiving system checks the incoming data frame for errors by calculating its own FCS field value and comparing it to the FCS field value in the received frame. Second, the receiving system changes certain fields in the frame to convert the frame to the new format. Third, the receiving system recalculates the FCS field value based upon the changed frame.
This sequential three step process leaves the data unprotected against errors introduced after the first step is completed but before the third step is performed. If an error is introduced into the data during this time period, the FCS field value calculated during the third step will not in any way reflect or indicate that error since the presumption is that FCS field value calculations are being performed on error-free data. Assuming no further errors are introduced, error checking operations performed at subsequent receiving systems will falsely indicate that the data contained in the frame is free of errors.
It has also been suggested that each frame being transferred into a system using a different frame format be encapsulated or enveloped within the frame structure appropriate for the receiving system. An FCS field value would be generated for the encapsulating frame. One drawback to this approach is that the encapsulation is necessary only if the data originates in a system having a different frame format. The receiving system must be able to treat incoming frames differently, depending on where these frames come from. This requirement adds to the complexity of the data transmission.